package action

import (
	"context"

	v1 "code.byted.org/bytertc/whiteboard_server/biz/api/pb/v1"
	"code.byted.org/bytertc/whiteboard_server/biz/dal/spec"
)

const InitialActionId = 0

type Action interface {
	spec.ActionUnique
	spec.BoardUnique
	Execute(ctx context.Context) error
	IsAtomic() bool           // 是否可以部分成功
	RawActions() []*v1.Action // 用于生成广播消息, 对于非原子性的动作, 出现出错或冲突后由此拿到部分已生效的动作
	ConflictObjects() []string
	GetOperator() string
}
type Info struct {
	Operator string
	AppId    string
	RoomId   string
	BoardId  int32
	PageId   string
}

func (i *Info) GetOperator() string {
	return i.Operator
}

func (i *Info) GetAppId() string {
	return i.AppId
}

func (i *Info) GetRoomId() string {
	return i.RoomId
}

func (i *Info) GetBoardId() int32 {
	return i.BoardId
}

func (i *Info) GetPageId() string {
	return i.PageId
}
